const utils = require('../../js/utils')

Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 开始和结束时间
    startDate: '',
    endDate: '',
    // 记录数据
    bookingData: [],
    // 本月支出
    spending: '',
    // 本月收入
    income: '',
    // 本月结余
    over: '',
    // 组件数据
    listData: [],
    // 骨架屏
    loading: true,
    // 本月共几笔
    count: 0,
    type: [
      {title: '所有', type: 'all'},
      {title: '支出', type: 'zc'},
      {title: '收入', type: 'sr'},
      // {title: '转账', type: 'zz'},
    ],
    typeActive: 0,
    // 选择器时间
    pickerDate: ''
  },

  // 获取记录数据
  getBookingData(startDate, endDate) {
    wx.showLoading({
      title: '加载中...'
    })
    wx.cloud.callFunction({
      name: 'get_booking',
      data: {
        startDate,
        endDate,
        offset: 0,
        limit: 0
      }
    }).then(res => {
      // 
      // 关闭加载提示
      wx.hideLoading();
      // 处理时间
      res.result.data.forEach(v => {
        v.time = utils.formatDate(v.time, 'hh:mm');
      })
      this.setData({
        bookingData: res.result.data,
        count: res.result.data.length
      })
      // 渲染页面数据(月)
      this.renderingMonth();
      // 处理金额
      res.result.data.forEach(v => {
        v.money = Number(v.money).toFixed(2);
        v.money = utils.thousandth(v.money);
      })
      // 渲染页面数据(天)
      this.renderingDay('all', this.data.pickerDate);
      // this.renderingDay('2021-05-26');
    }).catch(err => {
      
      // 关闭加载提示
      wx.hideLoading();
    })
  },

  // 渲染页面数据
  renderingMonth() {
    let s = 0;
    let i = 0;
    let o = 0;
    this.data.bookingData.forEach(v => {
      // 统计支出
      if(v.subbar.type === 'zc') {
        s += v.money - 0;
      }
      // 统计收入
      if(v.subbar.type === 'sr') {
        i += v.money - 0;
      }
    })
    // 统计结余
    o = i - s;
    s = utils.thousandth(s.toFixed(2));
    i = utils.thousandth(i.toFixed(2));
    o = utils.thousandth(o.toFixed(2));
    this.setData({
      spending: s,
      income: i,
      over: o
    })
  },

  renderingDay(type, date) {
    let arr = [];
    this.data.bookingData.forEach(v => {
      if(v.date === date) {
        if(type === 'all') {
          arr.push(v);
        }
        if(v.subbar.type === type) {
          if(v.date === date) {
            arr.push(v);
          }
        }
      }
    })
    this.setData({
      listData: arr
    })
  },

  // 切换分类
  toggleType(e) {
    let type = e.currentTarget.dataset.type;
    let index = e.currentTarget.dataset.index;
    if(index === this.data.typeActive) {
      return;
    }
    this.setData({
      typeActive: index
    })
    this.renderingDay(type, this.data.pickerDate);
  },

  // 过滤数据
  changeDate(e) {
    this.setData({
      pickerDate: e.detail.value
    })
    let type = this.data.typeActive == 0 ? 'all' : this.data.typeActive == 1 ? 'zc' : 'sr';
    let d = this.data.bookingData.filter(v => {
        if(this.data.pickerDate == v.date) {
          if(type == 'all') {
            return v;
          }
          if(type == v.subbar.type) {
            return v;
          }
        }
    })
    this.setData({
      listData: d
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    this.setData({
      loading: false
    })
  },

  /**
   * 生命周期函数--监听页面显示（每一次显示都会调用）
   */
  onShow: function () {
    utils.thousandth(12345);
    // 获取当月第一天为开始时间
    let s = utils.formatDate(new Date(), 'yyyy-MM-01');
    // 获取当前时间为结束时间
    let e = utils.formatDate(new Date(), 'yyyy-MM-dd');
    // 设置时间
    this.setData({
      startDate: s,
      endDate: e,
      pickerDate: e
    })
    // 调用获取记录函数
    this.getBookingData(this.data.startDate, this.data.pickerDate);
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})